﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using WC.BL.BE;
using System.Collections.Generic;
using WC.BL.BCC;
using System.IO;

namespace WC.UI.WebApp
{
    public partial class MantArchivos : System.Web.UI.Page
    {

        private List<ArchivosBE> lstArch = new List<ArchivosBE>();
        #region Metodos internos
        private void listarArchivos()
        {

            string rutaServ = ParametroBC.Instance.getParamValue("RutaArchivos");
            rutaServ = rutaServ.Replace("/", ((char)92).ToString());
            string folderToBrowse = Server.MapPath(@"~" + (char)92 + rutaServ);

            DirectoryInfo DirInfo = new DirectoryInfo(folderToBrowse);
            for (int i = 0; i < DirInfo.GetFileSystemInfos().Count(); i++)
            {
                ArchivosBE a = new ArchivosBE();
                a.Nombre = DirInfo.GetFileSystemInfos().ElementAt(i).Name;
                a.Ruta = DirInfo.GetFileSystemInfos().ElementAt(i).FullName;
                lstArch.Add(a);
            }
            Session["lstArch"] = lstArch;
            cgvArchivos.DataSource = lstArch;
            cgvArchivos.DataBind();
        }

        private void grabarArchivo(string archivo, string rutaServ)
        {
            if ((flimage.PostedFile != null) && (flimage.PostedFile.ContentLength > 0))
            {
                string fn = System.IO.Path.GetFileName(flimage.PostedFile.FileName);
                rutaServ = rutaServ.Replace("/", ((char)92).ToString());
                string SaveLocation = Server.MapPath(@"~" + (char)92 + rutaServ + fn);
                try
                {
                    flimage.PostedFile.SaveAs(SaveLocation);
                }
                catch (Exception ex)
                {
                    Response.Write(ex.Message);
                    Session["Mensaje"] = ex.Message.ToString();
                }

            }
            else
            {
                //this.lblmessage.Text = "Seleccione un archivo que cargar.";
            }

        }

        private void borrarArchivo(string archivo, string rutaServ)
        {
            try
            {
                rutaServ = rutaServ.Replace("/", ((char)92).ToString());
                string delLocation = Server.MapPath(@"~" + (char)92 + rutaServ + archivo);

                // ...or by using FileInfo instance method.
                System.IO.FileInfo fi = new System.IO.FileInfo(delLocation);
                try
                {
                    fi.Delete();
                }
                catch (System.IO.IOException ex)
                {
                    Session["Mensaje"] = ex.Message.ToString();
                }
            }
            catch
            { 
            
            }

        }
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            //Sirve para validar si el usuario es ADMIN
            if (!Page.IsPostBack)
            {
                try
                {
                    listarArchivos();
                }
                catch { }
            }

        }

        protected void ibtnAddArch_Click(object sender, ImageClickEventArgs e)
        {
            try
            {

                grabarArchivo(flimage.PostedFile.FileName, ParametroBC.Instance.getParamValue("RutaArchivos"));
                listarArchivos();
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                //listarArchivos();
            }
        }

        protected void imgEliminar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                List<ArchivosBE> lstArch = (List<ArchivosBE>)Session["lstArch"];
                foreach (GridViewRow dli in cgvArchivos.Rows)
                {

                    //eliminar items

                    CheckBox chkBorrar = (CheckBox)dli.FindControl("chkBorrar");
                    if (chkBorrar != null && chkBorrar.Checked)
                    {
                        HiddenField hidPosicion = (HiddenField)dli.FindControl("hidPosicion");
                        if (hidPosicion != null)
                        {
                            borrarArchivo(hidPosicion.Value.ToString(), ParametroBC.Instance.getParamValue("RutaArchivos"));
                            listarArchivos();
                        }
                    }
                    //--- fin eliminación

                }
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                //listarArchivos();
            }
            
        }

    }
}
